package com.cn.por.biz.menu.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.cn.por.biz.menu.dao.MenuDao;
import com.cn.por.biz.menu.dto.Menu;
import com.cn.por.biz.menu.dto.MenuDto;
import com.cn.por.biz.menu.dto.MenuSimple;
import com.cn.por.biz.menu.service.MenuService;
import com.cn.por.util.tree.TreeBuilder;
import com.cn.por.util.tree.TreeNode;
import com.cn.por.util.tree.TreeNodeUtils;
@Service
public class MenuServiceImpl implements MenuService {

	@Autowired
	private MenuDao menuDao;
	
	
	@Override
	public List<MenuSimple> getMenuSimple() {
		TreeNodeUtils tu = new TreeNodeUtils(menuDao.getMenuSimple());
		return tu.getTree();
	}
	
	@Override
	public List getMenu() {
		TreeNodeUtils tu = new TreeNodeUtils(menuDao.getMenu());
		return tu.getTree();
	}

	@Override
	public List<TreeNode> getMenuOrder(Menu menu) {
		List<TreeNode> originNode = menuDao.getMenuOrder(menu);
		return new TreeBuilder(originNode).buildTree();
	}

	@Override
	public int addMenu(Menu menu) {
		String newCode ="";
		/**
		 * 通过父级菜单的code,获取到父级菜单下的最大子级菜单的code
		 */
		String maxCode = menuDao.getMaxCode(menu);
		/**
		 * 1、当没有获取到maxCode,且当前code为空时，子菜单code为父级菜单+01。
		 */
		if(null==maxCode || "".equals(maxCode)) {
			newCode = (menu.getParentCode()==null || "".equals(menu.getParentCode()) ? "43" : menu.getParentCode()) +"01";
		}else {
			newCode = Long.valueOf(menu.getParentCode())+1+"";
		}
		menu.setCode(newCode);
		return menuDao.addMenu(menu);
	}

	@Override
	public String getMaxCode(Menu menu) {
		return menuDao.getMaxCode(menu);
	}

	@Override
	public int updateMenu(Menu menu) {
		return menuDao.updateMenu(menu);
	}


}
